import getpass
import os

from fastapi import FastAPI
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langserve import add_routes

os.environ["http_proxy"] = "127.0.0.1:7890"
os.environ["https_proxy"] = "127.0.0.1:7890"

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = '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'

#调用大语言模型
#1、创建大模型
model = ChatOpenAI(model='gpt-4o-mini')

#2、准备提示
# msg = [
#     SystemMessage(content='请将以下的内容翻译成意大利语'),
#     HumanMessage(content='你好，请问你要去哪里？')
# ]
#
# result = model.invoke(msg)
# print(result)

#3、创建返回数据的解析器 简单的响应解析数据
parser = StrOutputParser()
# print(parser.invoke(result))

# 定义提示模板
prompt_template = ChatPromptTemplate.from_messages([
    ('system','请将下面的内容翻译成{language}'),
    ('user','{text}')
])

#4、得到链
chain = prompt_template | model | parser

#5、直接使用chain来调用
# print(chain.invoke(msg))
print(chain.invoke({
    'language': 'English',
    'text': '你好，请问你要去哪里？'
}))

# 把我们的程序部署成服务
# 创建FastAPI应用
app = FastAPI(title='我的Langchain服务',version='1.0',description='这是一个Langchain服务-翻译任何语句的服务')
add_routes(
    app,
    chain,
    path="/chain",
)

if __name__ == '__main__':
    import uvicorn
    uvicorn.run(app, host="localhost", port=8000)